/**
 * Created by yangfan on 2016/10/21.
 */

define([],function(){
    var injector = angular.injector(["ng"]);
    var filterRequestion = function(requestion){
        if(requestion.data){
            var str="";
            for(var key in requestion.data){
                //IE不支持call
                //if(typeof  requestion.data[key]==="undefined"|| requestion.data[key]===""||   toString.call( requestion.data[key])=="[object Null]"||toString.call( requestion.data[key])=="[object Window]" || !requestion.data.hasOwnProperty(key)){
                if(typeof  requestion.data[key]==="undefined"|| requestion.data[key]===""||  requestion.data[key]==null ||requestion.data[key].toString()=="[object Window]" || !requestion.data.hasOwnProperty(key)){
                    //类型错误 或需要被过滤
                }else{
                    str += key +"="+requestion.data[key]+"&"
                }
            }
            str = str.substr(0,str.lastIndexOf("&"));
            return str;
        }
    };
    var getValiableType = function (str){
        if(toString.call( str)!="[object Null]" && toString.call( str)!="[object Undefined]"&& str!=""){
            return true
        }else {
            return false
        }
    };

    var ret = {
        library:{
            baseUrl:"http://"+allUrl+":8084",
            thesisUpload:{
                api:"elink_library/api/thesis/upload"
            }
        },
        data:{
            baseUrl:"http://gongchengjie.cn:8083",
            thesisUpload:{
                api:"elink_database/api/file/upload"
            }
        },
        config:{
            BASEURL_LIBRARY:"http://"+allUrl+":8084",
        //    BASEURL_BOSTBAR:"http://192.168.1.14:8081",
            BASEURL_BOSTBAR:"http://"+allUrl+":8086",

            BASEURL_NEWS:"http://"+allUrl+":8085",

            BASEURL_TRANSLATE:"http://"+allUrl+":8081",
            //BASEURL_DATABASE:"http://115.29.168.57:8080",

            BASEURL_VIDEO:"http://"+allUrl+":8082",

            BASEURL_Company:"http://"+allUrl+":8080",
            BASEURL_CompanyBlog:"http://"+allUrl+":8080",
            //BASEURL_VIDEO:"http://192.168.0.7:8080",
            //BASEURL_DATABASE:"http://192.168.1.14:8081",
            BASEURL_DATABASE:"http://"+allUrl+":8083",
            BASEURL_USER:"http://"+allUrl+":8080",
            //博文企业评论
            BASEURL_BLOG:"http://"+allUrl+":8080",
          //  BASEURL_UPLOAD:"http://"+allUrl+":8087",
            BASEURL_UPLOAD:"http://"+allUrl+":8087",

            //pdf 预览
            BASEURL_PDF:"http://192.168.0.31:8080",
            CONSTANT_PDF:"dcs.web/onlinefile",


            //获取行政区域
            //BASEURL_REGION:"http://192.168.0.2:8080",
            BASEURL_REGION:"http://"+allUrl+":8080",
            BASEURL_Stu:"http://"+allUrl+":8084",
            CONSTANT_LIBTAG:"elink_library/api/tag",
            COONSTANT_DATATAG:"elink_database/api/tag",
            CONSTANT_stud:"elink_library/api/category",
            CONSTANT_REGION_PROVICE:"elink_user/api/selector",
            CONSTANT_PRACTICE:"elink_video/api/practice",
            CONSTANT_RESUME:"elink_video/api/cvdatabase",
            CONSTANT_FILE:"elink_database/api/file",
            CONSTANT_LIBTHEISE:"elink_library/api/thesis",
            CONSTANT_BOSTBAR:"elink_postbar/api/bostbar",
            CONSTANT_PLANNHIER:"elink_video/api/plannhier",
            CONSTANT_JOB:"elink_video/api/job",
            CONSTANT_NEWS:"elink_news/api/news",
            CONSTANT_NEWSCOLLECTION :"elink_news/api/collection",
            CONSTANT_NEWSCOMMENT:"elink_news/api/comment",
            CONSTANT_UPLOADER:"elink_uploader/fileUpload",
            CONSTANT_LIBRARYUPLOADER:"/elink_library/api/thesis/upload",
            CONSTANT_sign:"elink_user/api/sign",
            //BASEURL_DATABASE:"http://115.29.168.57:8080",
            BASEURL_WorkSkill:"http://"+allUrl+":8082",
            CONSTANT_VEDIO:"elink_video/api/video",
            CONSTANT_enroll:"elink_video/api/enroll",
            CONSTANT_WorkSkill:"elink_video/api/skill",
            CONSTANT_WorkSkillcata:"elink_video/api/skillcategory",
            CONSTANT_WorkSkillListCon:"elink_video/api/skill/getList",
            CONSTANT_WorkSkillEvaCon:"elink_video/api/skillevaluate",
            CONSTANT_COURSECon:"elink_video/api/course",
            CONSTANT_videoCata:"elink_video/api/videocategory",
            CONSTANT_chapter:"elink_video/api/chapter",
            CONSTANT_collect:"elink_video/api/videocollection",
            CONSTANT_PLANNER:"elink_video/api/plannhier",
            CONSTANT_WorkData:"elink_video/api/enginhome",
            CONSTANT_evacompany:"elink_user/api/comment",
            CONSTANT_TRANSLATEE:"elink_common/api/dict",
            CONSTANT_coursetype:"elink_video/api/coursetype",
            CONSTANT_Job:"elink_video/api/job",
            CONSTANT_Map:"elink_user/api/selector",//省接口
            CONSTANT_PERSON:"elink_user/api/person",

	CONSTANT_Company:"elink_user/api/company",//企业信息
	CONSTANT_Blog:"elink_user/api/blog",
	CONSTANT_getCompanyFollowList:"/elink_recruit/api/blog",
            CONSTANT_cvdatabase:"elink_video/api/cvdatabase",
	    BASEURL_BOWEN:"http://"+allUrl+":8080",
	    CONSTAN_BWLIST:'elink_user/api/blog',
	    CONSTANT_COURSE:'elink_video/api/course',
	    CONSTANT_COLLECTIONA:'elink_user/api/collection',
	    CONSTANT_JOBLIST:'elink_video/api/job',
	    BASEURL_COMPANYOUT:"http://"+allUrl+":8080",
	    CONSTANT_FOLLOW:'elink_user/api/follow',
	    CONSTANT_COMPANYINFO:'elink_user/api/company',
		CONSTANT_COMPANYCOMMENT:'elink_user/api/comment',
		CONSTANT_SALARY:'elink_video/api/cvdatabase',
		CONSTANT_USER:'elink_user/api/user',
		CONSTANT_CATEGORY:'elink_database/api/category',
		CONSTANT_LIBRARY:'elink_library/api/thesis',
		CONSTANT_NEWSCATEGORY:'elink_news/api/category',

		CONSTANT_POSTBARCLASS:'elink_postbar/api/category',
		CONSTANT_COLLECTION:'elink_postbar/api/collection',
		CONSTANT_TAB:'elink_user/api/label',
		CONSTANT_reply:'elink_postbar/api/reply',
		CONSTANT_TAG:'elink_postbar/api/tag',
		
		CONSTANT_STAFF:'elink_user/api/staff',
		
		CONSTANT_NOTIFY:'elink_user/api/notify',
		CONSTANT_MESSAGE:'elink_user/api/message',
		CONSTANT_FILECOLLECTION:'elink_database/api/collection',
        CONSTANT_SHOPPING:'elink_user/api/cart',
        CONSTANT_ORDER:'elink_user/api/order',
        //专题接口
        CONSTANT_SUBJECT:'elink_database/api/subject',
        //首页广告接口
        CONSTANT_ADVER:'elink_library/api/banner'
        },
        QQface:{
            face:['/::)', '/::~', '/::B', '/::|', '/:8-)', '/::<', '/::$', '/::X', '/::Z', '/::\'(', '/::-|', '/::@', '/::P', '/::D', '/::O', '/::(', '/::+', '/:--b', '/::Q', '/::T', '/:,@P', '/:,@-D', '/::d', '/:,@o', '/::g', '/:|-)', '/::!', '/::L', '/::>', '/::,@', '/:,@f', '/::-S', '/:?', '/:,@x', '/:,@@', '/::8', '/:,@!', '/:!!!', '/:xx', '/:bye', '/:wipe', '/:dig', '/:handclap', '/:&-(', '/:B-)', '/:<@', '/:@>', '/::-O', '/:>-|', '/:P-(', '/::\'|', '/:X-)', '/::*', '/:@x', '/:8*', '/:pd', '/:<W>', '/:beer', '/:basketb', '/:oo', '/:coffee', '/:eat', '/:pig', '/:rose', '/:fade', '/:showlove', '/:heart', '/:break', '/:cake', '/:li', '/:bome', '/:kn', '/:footb', '/:ladybug', '/:shit', '/:moon', '/:sun', '/:gift', '/:hug', '/:strong', '/:weak', '/:share', '/:v', '/:@)', '/:jj', '/:@@', '/:bad', '/:lvu', '/:no', '/:ok', '/:love', '/:<L>', '/:jump', '/:shake', '/:<O>', '/:circle', '/:kotow', '/:turn', '/:skip', '/:oY', '/:#-0',  '/:kiss', '/:<&', '/:&>'],
            emojis:[
                "bowtie", "smile", "laughing", "blush", "smiley", "relaxed",
                "smirk", "heart_eyes", "kissing_heart", "kissing_closed_eyes", "flushed",
                "relieved", "satisfied", "grin", "wink", "stuck_out_tongue_winking_eye",
                "stuck_out_tongue_closed_eyes", "grinning", "kissing",
                "kissing_smiling_eyes", "stuck_out_tongue", "sleeping", "worried",
                "frowning", "anguished", "open_mouth", "grimacing", "confused", "hushed",
                "expressionless", "unamused", "sweat_smile", "sweat",
                "disappointed_relieved", "weary", "pensive", "disappointed", "confounded",
                "fearful", "cold_sweat", "persevere", "cry", "sob", "joy", "astonished",
                "scream", "neckbeard", "tired_face", "angry", "rage", "triumph", "sleepy",
                "yum", "mask", "sunglasses", "dizzy_face", "imp", "smiling_imp",
                "neutral_face", "no_mouth", "innocent", "alien", "yellow_heart",
                "blue_heart", "purple_heart", "heart", "green_heart", "broken_heart",
                "heartbeat", "heartpulse", "two_hearts", "revolving_hearts", "cupid",
                "sparkling_heart", "sparkles", "star", "star2", "dizzy", "boom",
                "collision", "anger", "exclamation", "question", "grey_exclamation",
                "grey_question", "zzz", "dash", "sweat_drops", "notes", "musical_note",
                "fire", "hankey", "poop", "shit", "\\+1", "thumbsup", "-1", "thumbsdown",
                "ok_hand", "punch", "facepunch", "fist", "v", "wave", "hand", "raised_hand",
                "open_hands", "point_up", "point_down", "point_left", "point_right",
                "raised_hands", "pray", "point_up_2", "clap", "muscle", "metal", "fu",
                "walking", "runner", "running", "couple", "family", "two_men_holding_hands",
                "two_women_holding_hands", "dancer", "dancers", "ok_woman", "no_good",
                "information_desk_person", "raising_hand", "bride_with_veil",
                "person_with_pouting_face", "person_frowning", "bow", "couplekiss",
                "couple_with_heart", "massage", "haircut", "nail_care", "boy", "girl",
                "woman", "man", "baby", "older_woman", "older_man",
                "person_with_blond_hair", "man_with_gua_pi_mao", "man_with_turban",
                "construction_worker", "cop", "angel", "princess", "smiley_cat",
                "smile_cat", "heart_eyes_cat", "kissing_cat", "smirk_cat", "scream_cat",
                "crying_cat_face", "joy_cat", "pouting_cat", "japanese_ogre",
                "japanese_goblin", "see_no_evil", "hear_no_evil", "speak_no_evil",
                "guardsman", "skull", "feet", "lips", "kiss", "droplet", "ear", "eyes",
                "nose", "tongue", "love_letter", "bust_in_silhouette",
                "busts_in_silhouette", "speech_balloon", "thought_balloon", "feelsgood",
                "finnadie", "goberserk", "godmode", "hurtrealbad", "rage1", "rage2",
                "rage3", "rage4", "suspect", "trollface", "sunny", "umbrella", "cloud",
                "snowflake", "snowman", "zap", "cyclone", "foggy", "ocean", "cat", "dog",
                "mouse", "hamster", "rabbit", "wolf", "frog", "tiger", "koala", "bear",
                "pig", "pig_nose", "cow", "boar", "monkey_face", "monkey", "horse",
                "racehorse", "camel", "sheep", "elephant", "panda_face", "snake", "bird",
                "baby_chick", "hatched_chick", "hatching_chick", "chicken", "penguin",
                "turtle", "bug", "honeybee", "ant", "beetle", "snail", "octopus",
                "tropical_fish", "fish", "whale", "whale2", "dolphin", "cow2", "ram", "rat",
                "water_buffalo", "tiger2", "rabbit2", "dragon", "goat", "rooster", "dog2",
                "pig2", "mouse2", "ox", "dragon_face", "blowfish", "crocodile",
                "dromedary_camel", "leopard", "cat2", "poodle", "paw_prints", "bouquet",
                "cherry_blossom", "tulip", "four_leaf_clover", "rose", "sunflower",
                "hibiscus", "maple_leaf", "leaves", "fallen_leaf", "herb", "mushroom",
                "cactus", "palm_tree", "evergreen_tree", "deciduous_tree", "chestnut",
                "seedling", "blossom", "ear_of_rice", "shell", "globe_with_meridians",
                "sun_with_face", "full_moon_with_face", "new_moon_with_face", "new_moon",
                "waxing_crescent_moon", "first_quarter_moon", "waxing_gibbous_moon",
                "full_moon", "waning_gibbous_moon", "last_quarter_moon",
                "waning_crescent_moon", "last_quarter_moon_with_face",
                "first_quarter_moon_with_face", "moon", "earth_africa", "earth_americas",
                "earth_asia", "volcano", "milky_way", "partly_sunny", "octocat", "squirrel",
                "bamboo", "gift_heart", "dolls", "school_satchel", "mortar_board", "flags",
                "fireworks", "sparkler", "wind_chime", "rice_scene", "jack_o_lantern",
                "ghost", "santa", "christmas_tree", "gift", "bell", "no_bell",
                "tanabata_tree", "tada", "confetti_ball", "balloon", "crystal_ball", "cd",
                "dvd", "floppy_disk", "camera", "video_camera", "movie_camera", "computer",
                "tv", "iphone", "phone", "telephone", "telephone_receiver", "pager", "fax",
                "minidisc", "vhs", "sound", "speaker", "mute", "loudspeaker", "mega",
                "hourglass", "hourglass_flowing_sand", "alarm_clock", "watch", "radio",
                "satellite", "loop", "mag", "mag_right", "unlock", "lock",
                "lock_with_ink_pen", "closed_lock_with_key", "key", "bulb", "flashlight",
                "high_brightness", "low_brightness", "electric_plug", "battery", "calling",
                "email", "mailbox", "postbox", "bath", "bathtub", "shower", "toilet",
                "wrench", "nut_and_bolt", "hammer", "seat", "moneybag", "yen", "dollar",
                "pound", "euro", "credit_card", "money_with_wings", "e-mail", "inbox_tray",
                "outbox_tray", "envelope", "incoming_envelope", "postal_horn",
                "mailbox_closed", "mailbox_with_mail", "mailbox_with_no_mail", "door",
                "smoking", "bomb", "gun", "hocho", "pill", "syringe", "page_facing_up",
                "page_with_curl", "bookmark_tabs", "bar_chart", "chart_with_upwards_trend",
                "chart_with_downwards_trend", "scroll", "clipboard", "calendar", "date",
                "card_index", "file_folder", "open_file_folder", "scissors", "pushpin",
                "paperclip", "black_nib", "pencil2", "straight_ruler", "triangular_ruler",
                "closed_book", "green_book", "blue_book", "orange_book", "notebook",
                "notebook_with_decorative_cover", "ledger", "books", "bookmark",
                "name_badge", "microscope", "telescope", "newspaper", "football",
                "basketball", "soccer", "baseball", "tennis", "8ball", "rugby_football",
                "bowling", "golf", "mountain_bicyclist", "bicyclist", "horse_racing",
                "snowboarder", "swimmer", "surfer", "ski", "spades", "hearts", "clubs",
                "diamonds", "gem", "ring", "trophy", "musical_score", "musical_keyboard",
                "violin", "space_invader", "video_game", "black_joker",
                "flower_playing_cards", "game_die", "dart", "mahjong", "clapper", "memo",
                "pencil", "book", "art", "microphone", "headphones", "trumpet", "saxophone",
                "guitar", "shoe", "sandal", "high_heel", "lipstick", "boot", "shirt",
                "tshirt", "necktie", "womans_clothes", "dress", "running_shirt_with_sash",
                "jeans", "kimono", "bikini", "ribbon", "tophat", "crown", "womans_hat",
                "mans_shoe", "closed_umbrella", "briefcase", "handbag", "pouch", "purse",
                "eyeglasses", "fishing_pole_and_fish", "coffee", "tea", "sake",
                "baby_bottle", "beer", "beers", "cocktail", "tropical_drink", "wine_glass",
                "fork_and_knife", "pizza", "hamburger", "fries", "poultry_leg",
                "meat_on_bone", "spaghetti", "curry", "fried_shrimp", "bento", "sushi",
                "fish_cake", "rice_ball", "rice_cracker", "rice", "ramen", "stew", "oden",
                "dango", "egg", "bread", "doughnut", "custard", "icecream", "ice_cream",
                "shaved_ice", "birthday", "cake", "cookie", "chocolate_bar", "candy",
                "lollipop", "honey_pot", "apple", "green_apple", "tangerine", "lemon",
                "cherries", "grapes", "watermelon", "strawberry", "peach", "melon",
                "banana", "pear", "pineapple", "sweet_potato", "eggplant", "tomato", "corn",
                "house", "house_with_garden", "school", "office", "post_office", "hospital",
                "bank", "convenience_store", "love_hotel", "hotel", "wedding", "church",
                "department_store", "european_post_office", "city_sunrise", "city_sunset",
                "japanese_castle", "european_castle", "tent", "factory", "tokyo_tower",
                "japan", "mount_fuji", "sunrise_over_mountains", "sunrise", "stars",
                "statue_of_liberty", "bridge_at_night", "carousel_horse", "rainbow",
                "ferris_wheel", "fountain", "roller_coaster", "ship", "speedboat", "boat",
                "sailboat", "rowboat", "anchor", "rocket", "airplane", "helicopter",
                "steam_locomotive", "tram", "mountain_railway", "bike", "aerial_tramway",
                "suspension_railway", "mountain_cableway", "tractor", "blue_car",
                "oncoming_automobile", "car", "red_car", "taxi", "oncoming_taxi",
                "articulated_lorry", "bus", "oncoming_bus", "rotating_light", "police_car",
                "oncoming_police_car", "fire_engine", "ambulance", "minibus", "truck",
                "train", "station", "train2", "bullettrain_front", "bullettrain_side",
                "light_rail", "monorail", "railway_car", "trolleybus", "ticket", "fuelpump",
                "vertical_traffic_light", "traffic_light", "warning", "construction",
                "beginner", "atm", "slot_machine", "busstop", "barber", "hotsprings",
                "checkered_flag", "crossed_flags", "izakaya_lantern", "moyai",
                "circus_tent", "performing_arts", "round_pushpin",
                "triangular_flag_on_post", "jp", "kr", "cn", "us", "fr", "es", "it", "ru",
                "gb", "uk", "de", "one", "two", "three", "four", "five", "six", "seven",
                "eight", "nine", "keycap_ten", "1234", "zero", "hash", "symbols",
                "arrow_backward", "arrow_down", "arrow_forward", "arrow_left",
                "capital_abcd", "abcd", "abc", "arrow_lower_left", "arrow_lower_right",
                "arrow_right", "arrow_up", "arrow_upper_left", "arrow_upper_right",
                "arrow_double_down", "arrow_double_up", "arrow_down_small",
                "arrow_heading_down", "arrow_heading_up", "leftwards_arrow_with_hook",
                "arrow_right_hook", "left_right_arrow", "arrow_up_down", "arrow_up_small",
                "arrows_clockwise", "arrows_counterclockwise", "rewind", "fast_forward",
                "information_source", "ok", "twisted_rightwards_arrows", "repeat",
                "repeat_one", "new", "top", "up", "cool", "free", "ng", "cinema", "koko",
                "signal_strength", "u5272", "u5408", "u55b6", "u6307", "u6708", "u6709",
                "u6e80", "u7121", "u7533", "u7a7a", "u7981", "sa", "restroom", "mens",
                "womens", "baby_symbol", "no_smoking", "parking", "wheelchair", "metro",
                "baggage_claim", "accept", "wc", "potable_water", "put_litter_in_its_place",
                "secret", "congratulations", "m", "passport_control", "left_luggage",
                "customs", "ideograph_advantage", "cl", "sos", "id", "no_entry_sign",
                "underage", "no_mobile_phones", "do_not_litter", "non-potable_water",
                "no_bicycles", "no_pedestrians", "children_crossing", "no_entry",
                "eight_spoked_asterisk", "eight_pointed_black_star", "heart_decoration",
                "vs", "vibration_mode", "mobile_phone_off", "chart", "currency_exchange",
                "aries", "taurus", "gemini", "cancer", "leo", "virgo", "libra", "scorpius",
                "sagittarius", "capricorn", "aquarius", "pisces", "ophiuchus",
                "six_pointed_star", "negative_squared_cross_mark", "a", "b", "ab", "o2",
                "diamond_shape_with_a_dot_inside", "recycle", "end", "on", "soon", "clock1",
                "clock130", "clock10", "clock1030", "clock11", "clock1130", "clock12",
                "clock1230", "clock2", "clock230", "clock3", "clock330", "clock4",
                "clock430", "clock5", "clock530", "clock6", "clock630", "clock7",
                "clock730", "clock8", "clock830", "clock9", "clock930", "heavy_dollar_sign",
                "copyright", "registered", "tm", "x", "heavy_exclamation_mark", "bangbang",
                "interrobang", "o", "heavy_multiplication_x", "heavy_plus_sign",
                "heavy_minus_sign", "heavy_division_sign", "white_flower", "100",
                "heavy_check_mark", "ballot_box_with_check", "radio_button", "link",
                "curly_loop", "wavy_dash", "part_alternation_mark", "trident",
                "black_square", "white_square", "white_check_mark", "black_square_button",
                "white_square_button", "black_circle", "white_circle", "red_circle",
                "large_blue_circle", "large_blue_diamond", "large_orange_diamond",
                "small_blue_diamond", "small_orange_diamond", "small_red_triangle",
                "small_red_triangle_down", "shipit"
            ],
        },

         httpSend :function(baseUrl,constant,requestion){
            var url;
            if(requestion.data && requestion.data.length!=0){
                var str = filterRequestion(requestion);
            }
            if(str&&!requestion.uri){
                url = baseUrl+"/"+constant +"?"+str;
            }else if(str&&requestion.uri){
                url = baseUrl+"/"+constant+"/"+requestion.uri+"?"+str;
            }else if(!str&&requestion.uri){
                url = baseUrl+"/"+constant+"/"+requestion.uri
            }
             //先不删除注释内容
             //if(localStorage.hasOwnProperty("seed")&&localStorage.hasOwnProperty("authToken")){
             //  if(!getValiableType(localStorage.seed) || !getValiableType(localStorage.authToken)){
             //      return
             //  }
             //  else{
             //   if(url.indexOf("?")>0){
             //       url =url+"&seed="+ localStorage.seed + "&authToken=" + ocalStorage.authToken;
             //   }else {
             //       url =url+"?seed="+ localStorage.seed + "&authToken=" + ocalStorage.authToken;
             //   }
             //  }
             //};
             if(!requestion.removeCookie){
                 if(url.indexOf("?")>0){
                     url =url+"&seed="+ localStorage.seed + "&authToken=" + localStorage.authToken;
                 }else {
                     url =url+"?seed="+ localStorage.seed + "&authToken=" + localStorage.authToken;
                 }
             }

            if(url!=undefined){
                var httpSend = function($http){
                    return $http({
                        method: requestion.type,
                        url:url,
                    })
                };
                return  injector.invoke(httpSend);
            }
        },
        insertImg: function (str,id){

        var selection= window.getSelection ? window.getSelection() : document.selection;

        var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0);

        if (!window.getSelection){

            document.getElementById(id).focus();

            var selection= window.getSelection ? window.getSelection() : document.selection;

            var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0);

            range.pasteHTML(str);

            range.collapse(false);

            range.select();

        }else{

            document.getElementById(id).focus();

            range.collapse(false);

            var hasR = range.createContextualFragment(str);

            var hasR_lastChild = hasR.lastChild;

            while (hasR_lastChild && hasR_lastChild.nodeName.toLowerCase() == "br" && hasR_lastChild.previousSibling && hasR_lastChild.previousSibling.nodeName.toLowerCase() == "br") {

                var e = hasR_lastChild;

                hasR_lastChild = hasR_lastChild.previousSibling;

                hasR.removeChild(e)

            }

            range.insertNode(hasR);

            if (hasR_lastChild) {

                range.setEndAfter(hasR_lastChild);

                range.setStartAfter(hasR_lastChild)

            }

            selection.removeAllRanges();

            selection.addRange(range)

        }

    },
        getHashChange:function(){
            return {
                initialize :function(handler) {
                //监听hashchange事件
                window.addEventListener('hashchange', handler, false);
               // window.addEventListener('popstate',handler , false);
            },
                removeListener : function(handler){
                    window.removeEventListener("hashchange",handler,false);
                  //  window.removeEventListener("popstate",handler,false);
                }
            }
        },
        //单次即时配色方案 不能记录及保存
        dealColor:function(){
        var marCount = 0,marDoc;
        return {
            singleInstance:function(event,item,rgb){
                if(event.target.style.color!=rgb){
                    if(marCount ==0){
                        marDoc = event.target;
                        event.target.style.color=rgb;

                    }else{
                        marDoc.style.color = "";
                        marDoc = event.target;
                        event.target.style.color=rgb;
                    }
                    marCount++;
                } else if(event.target.style.color==rgb){
//                      event.target.style.color="";
                }
            },
            clearMarDoc :function(){
                marDoc.style.color = "";
            }

        }

    }
        
    };
    return ret;
});